package com.vcredit.creditcat.persistence;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.vcredit.creditcat.framework.pagination.DefaultCriteria;
import com.vcredit.creditcat.model.User;


/**
 * 用户DAO
 * @author donghuawei
 *
 */
public interface UserMapper {
	
	/**
	 * 新增用户
	 * @param obj 用户对象
	 */
	public void insert(User obj);
	
	/**
	 * 修改用户
	 * @param obj 用户对象
	 */
	public void update(User obj);
	
	/**
	 * 删除用户
	 * @param id 用户Id
	 */
	public void delete(Long id);

	/**
	 * 根据匹配查询
	 * @param obj 用户对象
	 * @return 用户集合
	 */
	public List<User> find(User obj);
	
	/**
	 * 根据Id查询
	 * @param id 用户Id
	 * @return 用户对象
	 */
	public User findById(Long id);
	
	
	/**
	 * 根据用户名查询用户对象
	 * @param userName 用户名
	 * @return 用户对象
	 */
	public User findByUserName(@Param("userName")String userName,@Param("status")Integer status);
	
	/**
	 * 根据角色Id查询关联的用户集合
	 * @param roleId 角色Id
	 * @return 用户集合
	 */
	public List<User> findByRoleId(Long roleId);

	Long findByPageCount(DefaultCriteria DefaultCriteria);
	
	List<User> findByPage(DefaultCriteria DefaultCriteria);

	void insertUserRole(Map<String,Long> data);
}
